public class Homework3 {
    //在子线程执行完毕后再执行主线程代码
    //有20个线程，需要同时启动。
    //每个线程按0-19的序号打印，如第一个线程需要打印0
    //请设计代码，在main主线程中，等待所有子线程执行完后，再打印 ok
    public static void main(String[] args) throws InterruptedException {
        Thread t0 = new Thread(()->{
            System.out.println("0");
        });
        Thread t1 = new Thread(()->{
            try {
                t0.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("1");
        });
        Thread t2 = new Thread(()->{
            try {
                t1.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("2");
        });
        Thread t3 = new Thread(()->{
            try {
                t2.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("3");
        });
        Thread t4 = new Thread(()->{
            try {
                t3.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("4");
        });
        Thread t5 = new Thread(()->{
            try {
                t4.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("5");
        });
        Thread t6 = new Thread(()->{
            try {
                t5.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("6");
        });
        Thread t7 = new Thread(()->{
            try {
                t6.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("7");
        });
        Thread t8 = new Thread(()->{
            try {
                t7.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("8");
        });
        Thread t9 = new Thread(()->{
            try {
                t8.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("9");
        });
        Thread t10 = new Thread(()->{
            try {
                t9.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("10");
        });
        Thread t11 = new Thread(()->{
            try {
                t10.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("11");
        });
        Thread t12 = new Thread(()->{
            try {
                t11.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("12");
        });
        Thread t13 = new Thread(()->{
            try {
                t12.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("13");
        });
        Thread t14 = new Thread(()->{
            try {
                t13.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("14");
        });
        Thread t15 = new Thread(()->{
            try {
                t14.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("15");
        });
        Thread t16 = new Thread(()->{
            try {
                t15.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("16");
        });
        Thread t17 = new Thread(()->{
            try {
                t16.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("17");
        });
        Thread t18 = new Thread(()->{
            try {
                t17.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("18");
        });
        Thread t19 = new Thread(()->{
            try {
                t18.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("19");
        });
        t0.start();
        t1.start();
        t2.start();
        t3.start();
        t4.start();
        t5.start();
        t6.start();
        t7.start();
        t8.start();
        t9.start();
        t10.start();
        t11.start();
        t12.start();
        t13.start();
        t14.start();
        t15.start();
        t16.start();
        t17.start();
        t18.start();
        t19.start();
        t19.join();
        System.out.println("ok");
    }
}
